home *** CD-ROM | disk | FTP | other *** search
- //: C24:RTTIwithExceptions.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- #include <typeinfo>
- #include <iostream>
- using namespace std;
- class X { public: virtual ~X(){} };
- class B { public: virtual ~B(){} };
- class D : public B {};
-
- int main() {
- D d;
- B & b = d; // Upcast to reference
- try {
- X& xr = dynamic_cast<X&>(b);
- } catch(...) {
- cout << "dynamic_cast<X&>(b) failed"
- << endl;
- }
- X* xp = 0;
- try {
- typeid(*xp); // Throws exception
- } catch(bad_typeid) {
- cout << "Bad typeid() expression" << endl;
- }
- } ///:~
-